package com.jiazhong.basic.pack0308.ex;

import java.util.InputMismatchException;
import java.util.Scanner;

// 多异常处理情况
public class DemoB {
    private static Scanner scan = new Scanner(System.in);

    private static void a() {
        System.out.print("请输入一个数：");
        int a, b, result;
        try {
            a = scan.nextInt(); // 有可能出现异常 输入异常
        } catch (InputMismatchException e) {
            System.out.println("输入的不合法");
            a = 8;
        }
        int[] array = {6, 9, 8, 0, 3, 0, 6, 2, 5, 0};
        int index = (int) (Math.random() * 12);
        System.out.println("随机生成的索引号是：" + index);
        try {
            b = array[index]; // 有可能出现数组越界了
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("数组下标越界了");
            b = 6;
        }
        System.out.println("另一个数是：" + b);
        try {
            result = a / b; // 有可能出现数学异常
        } catch (ArithmeticException e) {
            System.out.println("除数不能为0");
            result = 1;
        }
        System.out.println("运算的结果是：" + result);
    }

    private static void b() {
        int a, b, result = 0;
        try {
            System.out.print("请输入一个数：");
            a = scan.nextInt(); // 有可能出现异常 输入异常
            int[] array = {6, 9, 8, 0, 0, 0, 6, 0, 5, 0};
            int index = (int) (Math.random() * 12);
            System.out.println("随机生成的索引号是：" + index);
            b = array[index]; // 有可能出现数组越界了
            System.out.println("另一个数是：" + b);
            result = a / b; // 有可能出现数学异常
        } catch (ArithmeticException e) {
            System.out.println("除数不能为0");
            result = 1;
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("数组下标越界了");
            b = 6;
        } catch (InputMismatchException e) {
            System.out.println("输入的不合法");
            a = 8;
        }

        System.out.println("运算的结果是：" + result);
    }

    // 异常在执行过程中，按照顺序依次执行，所以，定义异常时，按照先子类，后父类的方式定义
    private static void c() {
        int a, b, result = 0;
        try {
            System.out.print("请输入一个数：");
            a = scan.nextInt(); // 有可能出现异常 输入异常
            int[] array = {6, 9, 8, 0, 0, 0, 6, 0, 5, 0};
            int index = (int) (Math.random() * 12);
            System.out.println("随机生成的索引号是：" + index);
            b = array[index]; // 有可能出现数组越界了
            System.out.println("另一个数是：" + b);
            result = a / b; // 有可能出现数学异常
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("数组下标越界了");
            b = 6;
        } catch (InputMismatchException e) {
            System.out.println("输入的不合法");
            a = 8;
        } catch (Exception e) {
            System.out.println("除数不能为0");
            result = 1;
        }

        System.out.println("运算的结果是：" + result);
    }

    public static void main(String[] args) {
        b();
    }
}
